package com.todo.sight.application.service;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.common.common.enums.CityTypeEnum;
import com.todo.sight.application.entity.bo.CityInfoBO;
import com.todo.sight.application.entity.condition.CityInfoConditionBO;
import com.todo.sight.application.entity.bo.CityInfoBO;
import com.todo.sight.application.entity.condition.CityInfoConditionBO;

import java.util.List;

/**
 * (CityInfo)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:44
 */
public interface CityInfoService {

    /**
     * 新增城市信息
     *
     * @param cityInfoBO
     * @return
     */
    Boolean insertCityInfo(CityInfoBO cityInfoBO);

    /**
     * 更新城市信息
     *
     * @param cityInfoBO
     * @return
     */
    Boolean updateCityInfo(CityInfoBO cityInfoBO);

    /**
     * 删除城市信息
     *
     * @param id
     * @return
     */
    Boolean removeCityInfoById(Long id);

    /**
     * 根据城市Id查询城市信息
     *
     * @param id
     * @return
     */
    CityInfoBO queryCityInfoById(Long id);

    /**
     * 根据名称搜索城市列表
     *
     * @param name
     * @return
     */
    List<CityInfoBO> searchCityInfoByName(String name);

    /**
     * 根据名称查询城市信息
     *
     * @param name
     * @return
     */
    CityInfoBO queryCityInfoByName(String name);

    /**
     * 根据父Id查询城市信息列表
     * 注：因一个明确的父级别城市确定，其子数据基本可控，不做分页查询
     *
     * @param parentId
     * @return
     */
    List<CityInfoBO> queryCityInfoByParentId(Long parentId, CityTypeEnum cityType);

    /**
     * 启禁用城市信息
     *
     * @param cityId
     * @param isShow
     * @return
     */
    Boolean enableCityInfoById(Long cityId, Integer isShow);

    /**
     * 多条件查询城市信息
     *
     * @param conditionBO
     * @return
     */
    PageResult<CityInfoBO> queryCityInfoByCondition(CityInfoConditionBO conditionBO);
}
